﻿# -*- coding: utf-8 -*-

import nltk

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Effectue l'analyse de phrases à l'aide de nltk.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
class Analyseur:
    def __init__(self, in_grammaire, in_phrases):
        self.setGrammaire(in_grammaire)
        self.setPhrases(in_phrases)
        self.resultats = []
        
    """""""""""""""""""""""""""""""""""""""""""""""""""
    " Effectue l'interprétation des phrases en utilisant
    " la grammaire spécifiée par setGrammaire().
    """""""""""""""""""""""""""""""""""""""""""""""""""
    def executer(self):
        self.resultats = nltk.batch_interpret(self.phrases, self.grammaire)
    
    """""""""""""""""""""""""""""""""""""""""""""""""""
    "Affiche les fonctions résultantes.
    """""""""""""""""""""""""""""""""""""""""""""""""""
    def afficherResultats(self):

        "affiche le premier resultat de chaque phrase qui ne contient aucun \ "
        for resultat in self.resultats:
            for x in range(len(resultat)):  
                if ((resultat[x][1].__str__()).find('\\') == -1):
                    print resultat[x][1]
                    break
                    
    """""""""""""""""""""""""""""""""""""""""""""""""""
    " Affiche l'arbre syntaxique pour chaque phrase.
    """""""""""""""""""""""""""""""""""""""""""""""""""
    def afficherArbres(self):
        for allresults in self.resultats:
            for (synrep, semrep) in allresults: 
                #print synrep
                #print semrep
                synrep.draw()
    
    """""""""""""""""""""""""""""""""""""""""""""""""""
    " Getters / setters.
    """""""""""""""""""""""""""""""""""""""""""""""""""
    def setGrammaire(self, in_fichier_grammaire):
        self.grammaire = "file:../grammaire/" + in_fichier_grammaire + ".fcfg"
        
    def setPhrases(self, in_phrases):
        self.phrases = in_phrases
    
    def getResultats(self):
        return self.resultats